package assignment1; import java.util.Arrays; import java.util.Scanner; public class PolynomialOperation { private int size1; private int size2; private int[] p1; private int[] p2; private int[] pRes = new int[500]; private double[] m; int x; public PolynomialOperation() { System.out.println("Read degree of polynom 1:"); Scanner keyboard = new Scanner(System.in); x = keyboard.nextInt(); size1 = x; p1 = readpoly(keyboard, size1); System.out.println("Read degree of polynom 2:"); x = keyboard.nextInt(); size2 = x; p2 = readpoly(keyboard, size2); } private int[] readpoly(Scanner keyboard, int size) { int[] polynom = new int[size + 1]; for (int i = 0; i <= size; i++) { System.out.println("Read the coeff for x^" + i+":"); if (keyboard.hasNext()) { int x2 = keyboard.nextInt(); polynom[i] = x2; } } return polynom; } protected int[] addition() { int i; if (size1 > size2) { for (i = size1; i > size2; i--) pRes[i] = p1[i]; for (i = size2; i >= 0; i--) { pRes[i] = p1[i] + p2[i]; } } else if (size2 > size1) { for (i = size2; i > size1; i--) pRes[i] = p2[i]; for (i = size1; i >= 0; i--) { pRes[i] = p1[i] + p2[i]; } } else for (i = 0; i <= size1; i++) { pRes[i] = p1[i] + p2[i]; } return pRes; } protected int[] substraction() { int i; if (size1 > size2) { for (i = size1; i > size2; i--) pRes[i] = p1[i]; for (i = size2; i >= 0; i--) { pRes[i] = p1[i] - p2[i]; } } else if (size2 > size1) { for (i = size2; i > size1; i--) pRes[i] = -p2[i]; for (i = size1; i >= 0; i--) { pRes[i] = p1[i] - p2[i]; } System.out.println("INTRI"); } else for (i = 0; i <= size1; i++) { pRes[i] = p1[i] - p2[i]; } return pRes; } protected int[] multiplication() { int i; int j; for (i = 0; i < size1 + size2; i++) { pRes[i] = 0; } for (i = 0; i <= size1; i++) { for (j = 0; j <= size2; j++) { int c = i + j; pRes[c] = pRes[i + j] + p1[i] * p2[j]; } } return pRes; } protected double[] integrate() { int i; double[] m = Arrays.stream(p1).asDoubleStream().toArray(); for (i = 0; i <= size1; i++) { m[i] = (double)p1[i] / (i + 1); } for (int j = size1+1; j >= 1; j--) { System.out.print(m[j-1] + "x^" + j + "+"); } return m; } protected int[] derivate() { int i; for (i = size1; i>0; i--) { p1[i] = p1[i] * i; System.out.println("p["+i+"]="+p1[i]); } return p1; } protected int[] division() { int i; int j; for (i = 0; i < size1 + size2; i++) { pRes[i] = 0; } for (i = 0; i <= size1; i++) { for (j = 0; j <= size2; j++) { int c = i + j; pRes[c] = pRes[i + j] + p1[i] * p2[j]; } } return pRes; } public int[] getP1() { return p1; } public int getSize1() { return size1; } public int[] getP2() { return p2; } public int[] getPres() { return pRes; } public int getSize2() { return size2; } public double[] getM() { return m; } }